( var ae, ae1,ae2, ae3, f, table1, table2, table3; //amplitude envelopes ae = Env.asr(20, 1, 0.04, 1, 'sine'); //long attack asr ae1 = Env.asr(0.001, 1, 0.02, 1, 'sine'); //short attack asr ae2 = Env.asr(0.1, 1, 0.4, 1, 'sine'); //short attack asr limited amp //wavetables f = File.new(":Sounds:tabletest","rb"); //open a new File. rb=read only - binary mode table1 = Wavetable.sineFill(512, 1.0/[3, 5, 7, 9, 11, 13, 15, 17]); table2 = Wavetable.readNew(f); table3 = Wavetable.sineFill(512, [0.3, 0.3, 0.9, 0.9, 0.3]); Synth.scope({OrcScore.ar( IdentityDictionary[ 'thudy' -> {arg spawn, i, synth, deltaTime, instrumentNum, ampEnv, pfreqs, pfeShape, cutFreqs, cfeShape, bw, amp, cutFreqs1, cfeShape1, bw1, amp1, wT, panPos, ppeShape, dur, envTimes; var pfTimes, pfEnv, cutFreqEnv, cutFreqEnv1, panEnv, impGen, bpf, bpf1, outsig; pfEnv = Env.new(pfreqs, envTimes, pfeShape); cutFreqEnv = EnvGen.kr(Env.new(cutFreqs, envTimes, cfeShape)); cutFreqEnv1 = EnvGen.kr(Env.new(cutFreqs1, envTimes, cfeShape1)); panEnv = EnvGen.kr(Env.new(panPos, envTimes, ppeShape)); synth.releaseTime = dur; // or should it be envTimes.sum ?; impGen = LFPulse.ar(EnvGen.ar(pfEnv), 0.5, 5); bpf = BPF.ar(impGen, cutFreqEnv, bw/cutFreqEnv, amp); bpf1 = BPF.ar(impGen, cutFreqEnv1, (bw1)/cutFreqEnv1, amp1); outsig = LPF.ar(LeakDC.ar(Shaper.ar(wT, bpf + bpf1)), 5000); Pan2.ar(EnvGen.ar(ampEnv, outsig), panEnv)}; ], [[25, 'thudy', ae1, [1] ++ Array.fill(14, {1 + 3.0.rand}), 'sine', Array.fill(15, {100 +50.0.rand}), 'sine', 1.5, 5, Array.fill(15, {200 +50.0.rand}), 'sine', 1.5, 5, table1, Array.fill(15, 0.55), 'linear', 25, Array.fill(14, {3.5+3.0.rand})]] ++ [[0, 'thudy', ae1, Array.fill(40, { 1 +10.rand}), 'step', Array.fill(40, 1000 + 500.0.rand), 'step', 1, 10, Array.fill(40, 500 +500.0.rand), 'step', 1, 10, table1, Array.fill(40, {1.0.rand2}), 'step' , 10, Array.fill(39, {0.5+1.0.rand})]] ++ [[0, 'thudy', ae1, Array.fill(40, { 1 + 10.rand}), 'step', Array.fill(40, 1000 + 500.0.rand), 'step', 1, 10, Array.fill(40, 500 +500.0.rand), 'step', 1, 10, table1, Array.fill(40, {1.0.rand2}), 'step' , 10, Array.fill(39, {0.5+1.0.rand})]] ++ [[5, 'thudy', ae1, Array.fill(40, {1 + 10.rand}), 'step', Array.fill(40, 1000 + 500.0.rand), 'step', 1, 10, Array.fill(40, 500 +500.0.rand), 'step', 1, 10, table1, Array.fill(40, {1.0.rand2}), 'step' , 10, Array.fill(39, {0.5+1.0.rand})]] ++ [[5, 'thudy', ae1, Array.fill(2, {10}), 'sine', Array.fill(2, 100 + 50.0.rand), 'sine', 5, 2, Array.fill(2, 160 + 100.rand), 'sine', 5, 2, table1, Array.fill(2, {1.0.rand2}), 'sine' , 1.5, [1.6]]] ++ [[0, 'thudy', ae1, Array.fill(40, { 1 +10.rand}), 'step', Array.fill(40, {1000 + 500.0.rand}), 'step', 1, 10, Array.fill(40, 500 +500.0.rand), 'step', 1, 10, table1, Array.fill(40, {1.0.rand2}), 'step' , 10, Array.fill(39, {0.5+1.0.rand})]] ++ [[0, 'thudy', ae1, Array.fill(40, { 1 + 10.rand}), 'step', Array.fill(40, {1000 + 500.0.rand}), 'step', 1, 10, Array.fill(40, 500 +500.0.rand), 'step', 1, 10, table1, Array.fill(40, {1.0.rand2}), 'step' , 10, Array.fill(39, {0.5+1.0.rand})]] ++ [[0.7, 'thudy', ae2, [26, 14], 'sine', Array.fill(2, {700 +100.0.rand}), 'linear', 8, 50, Array.fill(2, {300 +50.0.rand}), 'linear', 8, 50, table2, [0.5, 0], 'linear', 0.7, [0.8]]] ++ [[1, 'thudy', ae1, [4, 15, 20], 'sine', Array.fill(3, {700 +100.0.rand}), 'linear', 8, 3, Array.fill(3, {300 +50.0.rand}), 'linear', 8, 2, table3, [0.5, 0, 0.5], 'linear', 6.4, [3.5, 3.0]]]++ [[10, 'thudy', ae1, Array.fill(40, {1 + 10.rand}), 'step', Array.fill(40, {1000 + 500.0.rand}), 'step', 1, 10, Array.fill(40, 500 +500.0.rand), 'step', 1, 10, table1, Array.fill(40, {1.0.rand2}), 'step' , 10, Array.fill(39, {0.5+1.0.rand})]] ++ [[0, 'thudy', ae1, Array.fill(40, { 1 +13.0.rand}), 'step', Array.fill(40, 1000 + 500.0.rand), 'step', 1, 20, Array.fill(40, 500 +500.0.rand), 'step', 1, 10, table1, Array.fill(40, {1.0.rand2}), 'step' , 1.1, Array.fill(39, {0.5+1.0.rand})]] ++ [[0, 'thudy', ae1, Array.fill(2, {16}), 'sine', Array.fill(2, 300 + 50.0.rand), 'sine', 5, 2, Array.fill(2, 560 + 100.rand), 'sine', 5, 2, table1, Array.fill(2, {1.0.rand2}), 'sine' , 0.5, [0.6]]] ++ [[0.6, 'thudy', ae1, Array.fill(2, {16}), 'sine', Array.fill(2, 300 + 50.0.rand), 'sine', 5, 2, Array.fill(2, 560 + 100.rand), 'sine', 5, 2, table1, Array.fill(2, {1.0.rand2}), 'sine' , 0.5, [0.6]]] ++ [[0.6, 'thudy', ae1, Array.fill(2, {4}), 'sine', [1200, 300], 'sine', 10, 4, Array.fill(2, 1560 + 100.rand), 'step', 10, 4, table1, Array.fill(2, {1.0.rand2}), 'sine' , 0.5, [0.6]]] ++ [[0.5, 'thudy', ae1, Array.fill(2, {16}), 'sine', Array.fill(2, 300), 'sine', 5, 2, Array.fill(2, 120), 'sine', 5, 2, table1, Array.fill(2, {1.0.rand2}), 'sine' , 0.6, [0.6]]] ++ [[0, 'thudy', ae1, Array.fill(40, { 1 +13.0.rand}), 'step', Array.fill(40, 100 + 500.0.rand), 'step', 1, 5, Array.fill(40, 500 +50.0.rand), 'step', 1, 5, table1, Array.fill(40, {1.0.rand2}), 'step' , 10, Array.fill(39, {0.5+1.0.rand})]] ++ [[10, 'thudy', ae1, Array.fill(40, { 1 +13.0.rand}), 'step', Array.fill(40, 100 + 500.0.rand), 'step', 1, 5, Array.fill(40, 500 +50.0.rand), 'step', 1, 5, table1, Array.fill(40, {1.0.rand2}), 'step' , 10, Array.fill(39, {0.5+1.0.rand})]] ++ [[1, 'thudy', ae1, Array.fill(40, { 1 +1.0.rand}), 'step', Array.fill(40, 1000 + 500.0.rand), 'step', 1, 5, Array.fill(40, 500 +50.0.rand), 'step', 1, 5, table1, Array.fill(40, {1.0.rand2}), 'step' , 8, Array.fill(39, {0.5+1.0.rand})]] ++ [[4, 'thudy', ae1, Array.fill(40, { 1 +4.0.rand}), 'step', Array.fill(40, 1000 + 500.0.rand), 'step', 1, 5, Array.fill(40, 500 +50.0.rand), 'step', 1, 5, table1, Array.fill(40, {1.0.rand2}), 'step' , 8, Array.fill(39, {0.5+1.0.rand})]] ++ [[0, 'thudy', ae, Array.fill(38, 15), 'linear', Array.fill(38, {600 +100.0.rand}), 'linear', 8, 2, Array.fill(38, {300 +50.0.rand}), 'linear', 8, 2, table2, Array.fill(38, 0.5), 'step', 30, Array.fill(37, {0.5+1.0.rand})]] ++ [[2, 'thudy', ae, Array.fill(38, 15), 'linear', Array.fill(38, {100 +50.0.rand}), 'linear', 8, 2, Array.fill(38, {300 +50.0.rand}), 'linear', 8, 2, table2, Array.fill(38, -0.5), 'step', 30, Array.fill(37, {0.5+1.0.rand})]] ++ [[0, 'thudy', ae1, Array.fill(40, { 1 +10.0.rand}), 'step', Array.fill(40, 1000 + 500.0.rand), 'step', 10, 1, Array.fill(40, 500 +50.0.rand), 'step', 10, 1, table1, Array.fill(40, {1.0.rand2}), 'step' ,42, Array.fill(39, {0.5+1.0.rand})]] ++ [[12, 'thudy', ae1, Array.fill(40, { 1 +10.0.rand}), 'step', Array.fill(40, 1000 + 500.0.rand), 'step', 1, 5, Array.fill(40, 500 +50.0.rand), 'step', 1, 5, table1, Array.fill(40, {1.0.rand2}), 'step' , 40, Array.fill(39, {0.5+1.0.rand})]], 2, nil, 1)}) )